/*kZime*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <cstdlib>
#include <algorithm>
using namespace std;
inline int read() {
	int k = 0, f = 1; char c = getchar();
	for(; !isdigit(c); c = getchar())if(c == '-') f = -1;
	for(; isdigit(c); c = getchar()) k = k * 10 + c - '0';
	return k * f;
}
/*-----------------------------------------------------------------------------*/

int map[233][233];

int AC() {
#ifndef MYLAB
	freopen(".in", "r", stdin);
	freopen(".out", "w", stdout);
#else
//	freopen("in.txt", "r", stdin);
#endif

	int n = read();
	
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			if(j <= i)continue;
			else map[i][j] = rand()%625;
		}
	} 

	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n; j++) {
			if(j <= i) map[i][j] = map[j][i];
			printf("%d ", map[i][j]);
		}
		printf("\n");
	}





	return 0;
}
int HA = AC();
int main(){;}

